
#ifndef GESTIONTIPOSOBJETOS_H_
#define GESTIONTIPOSOBJETOS_H_

#include "../../Utils/GestionId.h"
#include "../../Utils/YamlParser.h"
#include <algorithm>
#include "ObjetoEstatico.h"
#include "ObjetoMovible.h"

typedef struct infoAnimacion {
	string descripcion;
	string archivo;
	int periodo;
	int cuadros;
	idImagen_t idImagen;
} infoAnimacion_t;

typedef struct infoAccion {
	string descripcion;
	string archivo;
	int cuadros;
	idImagen_t idImagen;
} infoAccion_t;

class TipoObjetoEstatico {
	
	public:
	
		int ancho, alto;
		
		vector<infoAnimacion_t> animaciones;
		
		TipoObjetoEstatico() {};
		void Inicializar(int ancho, int alto, vector<Animacion_y> animaciones, bool tipoEspejada = NO_ESPEJADA);
		void AsignarAObjeto(ObjetoEstatico* objetoEstatico);
};

class TipoObjetoMovible {
		
	public:
	
		int ancho, alto;
		int velocidad;
		int salto;
		
		vector<infoAnimacion_t> animaciones;
		vector<infoAccion_t> acciones;
		
		TipoObjetoMovible() {};
		void Inicializar(int ancho, int alto, vector<Animacion_y> animaciones, vector<string> descripcionAcciones, int velocidad = 0, int salto = 0, bool tipoEspejada = ESPEJADA);
		void AsignarAObjeto(ObjetoMovible* objetoMovible);	
};

vector<infoAccion_t> AsignarParticulares(int ancho, int alto, vector<string> descripcionParticulares, vector<Animacion_y>* animaciones, bool tipoEspejada = ESPEJADA);

#endif /* GESTIONTIPOSOBJETOS_H_ */
